package com.example.cloudmusic.utils

import android.content.Context
import android.util.AttributeSet
import android.view.ViewGroup
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView

/**
 * 固定行数的网格布局管理器，用于实现"一列三行"的布局，支持水平滚动
 */
class FixedGridLayoutManager(
    context: Context,
    private val rowsPerColumn: Int = 3 // 每列的行数，默认为3
) : GridLayoutManager(context, rowsPerColumn, HORIZONTAL, false) {

    init {
        // 设置为水平方向，每行显示rowsPerColumn个项目
        orientation = HORIZONTAL
        spanCount = rowsPerColumn
    }

    /**
     * 自定义跨度分配，实现每列固定行数的布局
     */
    private var customSpanSizeLookup = object : SpanSizeLookup() {
        override fun getSpanSize(position: Int): Int {
            return 1 // 每个项目占据1个跨度
        }

        override fun getSpanIndex(position: Int, spanCount: Int): Int {
            // 计算当前位置在哪一行
            return position % rowsPerColumn
        }

        override fun getSpanGroupIndex(position: Int, spanCount: Int): Int {
            // 计算当前位置在哪一列
            return position / rowsPerColumn
        }
    }

    override fun onAttachedToWindow(view: RecyclerView) {
        super.onAttachedToWindow(view)
        // 设置自定义跨度查找
        setSpanSizeLookup(customSpanSizeLookup)
    }
}